// praxis/services/actuator_manager.h
#pragma once

#include <memory>
#include <string>
#include <nlohmann/json.hpp>

namespace praxis {

class IActuator;

class CActuatorManager {
 public:
  explicit CActuatorManager(const nlohmann::json& config);
  ~CActuatorManager();

  CActuatorManager(const CActuatorManager&) = delete;
  CActuatorManager& operator=(const CActuatorManager&) = delete;

  std::shared_ptr<IActuator> GetActuator(const std::string& name);
  void UpdateAllActuators();

 private:
  struct Impl;
  std::unique_ptr<Impl> impl_;
};

}  // namespace praxis
